home *** CD-ROM | disk | FTP | other *** search
- function GetWidthRatio(char)
- {
- index = 0;
- while(index < ratiotable.length)
- {
- if(ratiotable[index] == char)
- {
- return parseFloat(ratiotable[index + 1]);
- }
- index += 2;
- }
- size1 = textFormat.getTextExtent("W");
- size2 = textFormat.getTextExtent(char);
- return size2.width / size1.width;
- }
- _global.numEffect = 0;
- _global.numStarted = 0;
- _global.numLeaved = 0;
- enterDelay = new Array();
- leaveDelay = new Array();
- xEffect = new Array();
- yEffect = new Array();
- textEffect = new Array();
- curLine = 0;
- curChar = 0;
- curEnterDelay = 0;
- curLeaveDelay = 0;
- sumEnterDelay = 0;
- sumLeaveDelay = 0;
- while(curLine < paraText.Length)
- {
- if(curChar == 0 && curLine == 0)
- {
- textHeight = paraText.Length * lineHeight + (paraText.Length - 1) * lineSpace;
- switch(param["Movie.TextVAlign"])
- {
- case "top":
- textTop = 0;
- break;
- case "middle":
- textTop = (param["Movie.Height"] - textHeight) / 2;
- break;
- case "bottom":
- textTop = param["Movie.Height"] - textHeight;
- }
- lineTop = textTop + param["Movie.TextVOffset"] + lineHeight / 2;
- }
- if(curChar == 0)
- {
- switch(_global.playMode)
- {
- case 0:
- lineWidth = (paraText[curLine].Length - 1) * charSpace;
- i = 0;
- while(i < paraText[curLine].Length)
- {
- lineWidth += GetWidthRatio(paraText[curLine].substr(i,1)) * charWidth;
- i++;
- }
- break;
- case 1:
- lineWidth = charWidth;
- }
- switch(param["Movie.TextHAlign"])
- {
- case "left":
- lineLeft = 0;
- break;
- case "center":
- lineLeft = (param["Movie.Width"] - lineWidth) / 2;
- break;
- case "right":
- lineLeft = param["Movie.Width"] - lineWidth;
- }
- charLeft = lineLeft + param["Movie.TextHOffset"] + charWidth / 2;
- if(param["Movie.ReverseLetter"])
- {
- sumEnterDelay = 2 * curEnterDelay + (paraText[curLine].Length - 1) * param["Text.EnterDelay"];
- sumLeaveDelay = 2 * curLeaveDelay + (paraText[curLine].Length - 1) * param["Text.LeaveDelay"];
- }
- }
- if(curChar < paraText[curLine].Length)
- {
- if(param["Movie.ReverseLetter"])
- {
- cLetter = paraText[curLine].substr(paraText[curLine].Length - curChar - 1,1);
- }
- else
- {
- cLetter = paraText[curLine].substr(curChar,1);
- }
- widthRatio = GetWidthRatio(cLetter);
- if(cLetter != " ")
- {
- _global.numEffect = _global.numEffect + 1;
- if(param["Movie.ReverseLetter"])
- {
- enterDelay[_global.numEffect] = sumEnterDelay - curEnterDelay;
- leaveDelay[_global.numEffect] = sumLeaveDelay - curLeaveDelay;
- }
- else
- {
- enterDelay[_global.numEffect] = curEnterDelay;
- leaveDelay[_global.numEffect] = curLeaveDelay;
- }
- xEffect[_global.numEffect] = charLeft - (1 - widthRatio) * charWidth / 2;
- yEffect[_global.numEffect] = lineTop;
- textEffect[_global.numEffect] = cLetter;
- }
- switch(_global.playMode)
- {
- case 0:
- charLeft += charWidth * widthRatio + charSpace;
- break;
- case 1:
- }
- curChar++;
- curEnterDelay += param["Text.EnterDelay"];
- curLeaveDelay += param["Text.LeaveDelay"];
- }
- if(curChar == paraText[curLine].Length)
- {
- if(param["Movie.SyncLine"])
- {
- curEnterDelay = 0;
- curLeaveDelay = 0;
- }
- else
- {
- curEnterDelay += param["Text.EnterDelay"];
- curLeaveDelay += param["Text.LeaveDelay"];
- }
- curChar = 0;
- curLine++;
- lineTop += lineHeight + lineSpace;
- }
- }
-